package site.jlopen.dao.datasource;

import org.apache.ibatis.annotations.Mapper;
import site.jlopen.domain.datasource.KusciaDatasource;
import site.jlopen.domain.datasource.event.KusciaDatasourceEvent;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Param;

/**
* @ClassName: KusciaDatasourceDao
* @Description: 提供基本的增删改查接口，本类不可手动修改
* @author 码农小鹿
* @date 2024-10-18
 */
@Mapper
public interface KusciaDatasourceDao {

	/**
	 * 完全插入，没有条件判断
	 */
    int insert(KusciaDatasource record);

	/**
	 * 不完全插入，根据条件判断
	 */
    int insertSelective(KusciaDatasource record);

	/**
	 * 批量完全插入，没有条件判断
	 */
    int insertBatch(List<KusciaDatasource> list);

	/**
	 * 完全更新，没有条件判断
	 */
    int update(KusciaDatasource record);

	/**
	 * 不完全更新，根据条件判断
	 */
    int updateSelective(KusciaDatasource record);

	/**
	 * 根据主键删除信息
	 */
    int deleteByKey(Long datasourceId);

	/**
	 * 根据多个主键删除信息
	 */
    int deleteByKeys(List<Long> datasourceIds);

	/**
	 * 修改删除，主键/删除的字段名
	 */
    int deleteUpdate(@Param("datasourceId")Long datasourceId, @Param("delColumn")String delColumn);

	/**
	 * 修改删除，多个主键/删除的字段名
	 */
    int deleteUpdates(@Param("datasourceIds")List<Long> datasourceIds, @Param("delColumn")String delColumn);

	/**
	 * 根据主键获取单个信息
	 */
    KusciaDatasourceEvent selectByKey(Long datasourceId);

	/**
	 * 根据实体获取单个信息
	 */
	KusciaDatasourceEvent selectByInfo(KusciaDatasource info);
	
	/**
	 * 根据分页查询列表
	 */
    List<KusciaDatasourceEvent> selectAll(@Param("record")Map<String, Object> record, @Param("lastSql")String lastSql, 
    @Param("pageOffset")int pageOffset, @Param("pageSize")int pageSize);

	/**
	 * 分页搭配的总数量
	 */
    long selectAllCount(@Param("record")Map<String, Object> record);
    
    /**
	 * 没有分页查询列表（带追加sql）
	 */
    default List<KusciaDatasourceEvent> selectAllNotPage(Map<String, Object> record, String lastSql) {
    	return selectAll(record, lastSql, 0, 0);
    }
    
    /**
	 * 没有分页查询列表（不带追加sql）
	 */
    default List<KusciaDatasourceEvent> selectAllNotPage(Map<String, Object> record) {
    	return selectAll(record, null, 0, 0);
    }
}